[アップデート]AWS GlueでAmazon S3 Access Grantsが利用できるようになりました
みなさんこんにちは、杉金です。
AWS GlueでAmazon S3 Access Grantsが利用できるようになりました。
ただし、サポートされるジョブタイプはSparkのみです。
Glue SparkジョブでS3 Access Grantsを使用することで、Entra IDやOktaなどのIdpやIAMプリンシパルとS3に保存されているデータセットとを紐付けることができます。これにより、バケットポリシーや個別のIAMロールを作成・管理することなくS3の権限を簡単に管理できるようになりました。
S3 Access Grantsってなんだっけ?
S3 Access Grantsは、S3におけるアクセス制御のひとつで、S3バケットポリシーやIAMポリシーのポリシーサイズ制限内に収まりきらない、大規模なデータセットに対するアクセス制御を実現するための機能です。
S3 Access Grantsの概要
引用:https://aws.amazon.com/jp/blogs/news/scaling-data-access-with-amazon-s3-access-grants/
Glue以外にもS3 Access Grantsと統合されているサービスはあり、一覧は以下に記載されています。
AWS Glueとの統合のしくみ
Glue SparkジョブがどのようにS3 Access Grantsを利用してアクセスするかを解説したものが以下の図です。
引用:https://docs.aws.amazon.com/glue/latest/dg/security-s3-access-grants.html
- ユーザーは、S3に保存したデータにアクセスするGlue Sparkジョブを送信します。
- Glueは、バケット、プレフィックス、またはオブジェクトへのアクセスを許可する一時的な認証情報をユーザーに提供するために、S3 Access Grantsにリクエストします。
- ユーザーのSTSトークンの形式で一時的な認証情報を返します。トークンは、S3バケット、プレフィックス、またはオブジェクトにアクセスするためのスコープが設定されています。
- GlueはSTSトークンを使用してS3からデータを取得します。
制限事項
本機能を利用するにあたり、いくつか制限事項があります。
- S3 Access Grantsは、AWS Glueバージョン5.0以降でサポートされています。
- サポートされるジョブタイプは、Sparkのみです。
- サポートされるopen-table formatsは、Delta LakeとHudiのみです。
- 以下の機能は、S3 Access Grantsでの使用はサポートされていません。
- Apache Icebergテーブル
- IAMロールを使用する S3へのAWS CLIリクエスト
- オープンソースのS3AプロトコルによるS3アクセス
料金
S3 Access Grantsを利用したリクエストあたりに利用料が発生します。東京リージョンの場合は以下です。
- S3 Access Grants Requests (per 1,000 requests)
- 0.03USD
さいごに
今回のアップデートにより、セキュリティを維持しながら、権限管理の負担に繋がることが期待できます。また、企業が持つ既存のIdpとの連携ができることも大きな利点です。大規模なデータを扱うことの多いGlueにおいて、S3 Access Grantsとの相性はよさそうです。
個人的に、S3 Access Grantsのことを忘れていたので、思い出させてくれるよいきっかけとなりました。